package flag

import (
	"fmt"
	"giv-vue-blog/global"
	"giv-vue-blog/models"
	"giv-vue-blog/models/ctype"
	"giv-vue-blog/utils/pwd"
)

func CreateUser(permission string) {
	//创建用户逻辑
	var (
		userName   string
		nickName   string
		password   string
		rePassword string
		email      string
		tel        string
	)
	fmt.Printf("请输入用户名: ")
	fmt.Scan(&userName)
	fmt.Printf("请输入昵称: ")
	fmt.Scan(&nickName)
	fmt.Printf("请输入密码: ")
	fmt.Scan(&password)
	fmt.Printf("请再次密码: ")
	fmt.Scan(&rePassword)
	fmt.Printf("请输入邮箱: ")
	fmt.Scan(&email)
	fmt.Printf("请输入手机号: ")
	fmt.Scan(&tel)
	//判断用户名是否存在
	var userModel models.UserModel
	//err := global.DB.Take(&userModel, "user_name=?", userName).Error
	//if err == nil {
	//	//存在
	//	global.Log.Error("用户名已存在,请重新输入")
	//	return
	//}
	count := global.DB.Where("tel =?", tel).First(&userModel).RowsAffected
	if count != 0 {
		global.Log.Error("手机号已存在")
		return
	}
	//校验两次密码
	if password != rePassword {
		global.Log.Error("密码不一致")
		return
	}
	//对密码进行加密
	hashPwd := pwd.HashAndSalt(password)
	//指定默认用户是普通用户的身份 如果是admin 则是超管用户
	role := ctype.PermissionUser
	if permission == "admin" {
		role = ctype.PermissionAdmin
	}
	//头像问题
	//方案一 默认头像
	avatar := "/uploads/avatar/default.png"
	//方案二 随机头像

	//入库用户信息
	err := global.DB.Create(&models.UserModel{
		NickName:   nickName,
		UserName:   userName,
		Password:   hashPwd,
		Email:      email,
		Tel:        tel,
		Role:       role,
		Avatar:     avatar,
		IP:         "127.0.0.1",
		Addr:       "内网地址",
		SignStatus: ctype.SginEmail,
	}).Error
	if err != nil {
		global.Log.Error(err)
		return
	}
	global.Log.Infof("用户%s创建成功", userName)
}
